package com.agileboot.attendance.domain.project.dto;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.DecimalMin;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Size;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 项目添加与更新请求对象
 * 
 * @author ruoyi
 */
@Data
@ApiModel("项目添加与更新请求")
public class ProjectRequest {

    /**
     * 项目ID
     */
    @ApiModelProperty(value = "项目ID（更新时需要）")
    private Long projectId;

    /**
     * 项目名称
     */
    @NotBlank(message = "项目名称不能为空")
    @Size(max = 100, message = "项目名称长度不能超过100个字符")
    @ApiModelProperty(value = "项目名称", required = true)
    private String projectName;

    /**
     * 项目编码
     */
    @NotBlank(message = "项目编码不能为空")
    @Size(max = 50, message = "项目编码长度不能超过50个字符")
    @ApiModelProperty(value = "项目编码", required = true)
    private String projectCode;

    /**
     * 项目描述
     */
    @Size(max = 500, message = "项目描述长度不能超过500个字符")
    @ApiModelProperty(value = "项目描述")
    private String projectDesc;

    /**
     * 项目负责人
     */
    @Size(max = 100, message = "项目负责人长度不能超过100个字符")
    @ApiModelProperty(value = "项目负责人")
    private String projectManager;

    /**
     * 项目经理ID
     */
    @ApiModelProperty(value = "项目经理ID")
    private Long managerId;

    /**
     * 项目状态（0规划中、1进行中、2已完成、3已关闭）
     */
    @NotBlank(message = "项目状态不能为空")
    @ApiModelProperty(value = "项目状态（0规划中、1进行中、2已完成、3已关闭）", required = true)
    private String status;

    /**
     * 开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "开始日期")
    private Date startDate;

    /**
     * 结束日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @ApiModelProperty(value = "结束日期")
    private Date endDate;

    /**
     * 总预算
     */
    @DecimalMin(value = "0", message = "总预算不能小于0")
    @ApiModelProperty(value = "总预算")
    private BigDecimal totalBudget;

    /**
     * 总人月数
     */
    @DecimalMin(value = "0", message = "总人月数不能小于0")
    @ApiModelProperty(value = "总人月数")
    private BigDecimal totalManMonths;

    /**
     * 已用人月数
     */
    @DecimalMin(value = "0", message = "已用人月数不能小于0")
    @ApiModelProperty(value = "已用人月数")
    private BigDecimal usedManMonths;

    /**
     * 备注
     */
    @Size(max = 500, message = "备注长度不能超过500个字符")
    @ApiModelProperty(value = "备注")
    private String remark;
} 